﻿using System;
using System.Collections.Generic;
using System.Dto;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace System.IBLL
{
    public interface IMaterialManager
    {
        /// <summary>
        /// 消防及电梯物资table数据请求接口
        /// </summary>
        /// <param name="limit">条数</param>
        /// <param name="page">页数</param>
        /// <param name="datalet">数据总长度</param>
        /// <param name="MaterialName">物资名筛选器</param>
        /// <param name="MaterialLocation">物资位置筛选器</param>
        /// <param name="MaintenanceCycle">检修周期筛选器</param>
        /// <returns></returns>
        List<GetMaterialListDto> GetMaterialListDtos(int limit, int page, out int datalet, string MaterialName, string MaterialLocation, string MaintenanceCycle);
        /// <summary>
        /// 通过物资ID获取到相对应的物资检修信息 返回给检修详情页的table
        /// </summary>
        /// <param name="id">物资ID</param>
        /// <param name="limit">条数</param>
        /// <param name="page">页数</param>
        /// <param name="datalet">数据总长度</param>
        /// <param name="MaintenanceResults">检修结果筛选器</param>
        /// <param name="MaintenanceContent">检修内容筛选器</param>
        /// <returns></returns>
        List<GetMaterialListDto> GetMaterialMaintenanceListById(int id, int limit, int page, out int datalet, string MaintenanceResults, string MaintenanceContent);
        /// <summary>
        /// 物资检修请求接口
        /// </summary>
        /// <param name="MateriaId">物资ID</param>
        /// <param name="MaintenanceResults">检修结果</param>
        /// <param name="MaintenanceContent">检修内容</param>
        /// <param name="Remark">备注</param>
        /// <returns></returns>
        Task ConfirmMaterialById(string MateriaId, string MaintenanceResults, string MaintenanceContent, string Remark);
        /// <summary>
        /// 通过物资ID对物资信息进行伪删除，未关联删除
        /// </summary>
        /// <param name="id">物资ID</param>
        /// <returns></returns>
        Task DelMaterialById(int id);
        /// <summary>
        /// 添加一条物资信息
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task AddOneMaterialData(GetMaterialListDto dto);
        /// <summary>
        /// 通过物资ID获取到物资信息详情
        /// </summary>
        /// <param name="id">物资ID</param>
        /// <returns></returns>
        GetMaterialListDto GetMaterialById(int id);
        /// <summary>
        /// 物资信息表修改接口
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task EditOneMaterialByDto(GetMaterialListDto dto);
        /// <summary>
        /// 社区房屋管理页面table数据请求接口
        /// </summary>
        /// <param name="limit">条数</param>
        /// <param name="page">页数</param>
        /// <param name="datalet">数据总长度</param>
        /// <param name="issueNumber">期号筛选器</param>
        /// <param name="seatNunber">座号筛选器</param>
        /// <returns></returns>
        List<GetAllStoreyListDto> GetAllStoreyListDtos(int limit, int page, out int datalet, string issueNumber, string seatNunber);
        /// <summary>
        /// 添加一条房屋信息
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task AddOneStoreyByDto(GetAllStoreyListDto dto);
        /// <summary>
        /// 通过房屋ID删除房屋信息
        /// </summary>
        /// <param name="id">房屋ID</param>
        /// <returns></returns>
        Task DelOneStoreyById(int id);
        /// <summary>
        /// 通过房屋ID获取到具体的房屋信息
        /// </summary>
        /// <param name="id">房屋ID</param>
        /// <returns></returns>
        GetAllStoreyListDto GetOneStoreyById(int id);
        /// <summary>
        /// 修改一条房屋信息
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task EditOneStoreyByDto(GetAllStoreyListDto dto);
        /// <summary>
        /// 公告列表管理页面Table列表数据请求接口
        /// </summary>
        /// <param name="limit">条数</param>
        /// <param name="page">页数</param>
        /// <param name="datalet">数据总长度</param>
        /// <param name="publicityName">公告标题筛选器</param>
        /// <param name="publicityArticle">公告内容筛选器</param>
        /// <param name="releaseStatus">公告发布状态筛选器</param>
        /// <returns></returns>
        List<GetPublicityListDto> GetPublicityListDtos(int limit, int page, out int datalet, string publicityName, string publicityArticle, string releaseStatus);
        /// <summary>
        /// 通过公告ID修改公告发布状态
        /// </summary>
        /// <param name="id">公告ID</param>
        /// <returns></returns>
        Task ReleaseOnePublicityById(int id);
        /// <summary>
        /// 通过数据模型添加一条公告信息
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task AddOnePublicityByDto(GetPublicityListDto dto);
        /// <summary>
        /// 通过公告ID删除公告信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DelOnePublicityById(int id);
        /// <summary>
        /// 通过公告ID获取到相对于的公告信息
        /// </summary>
        /// <param name="id">公告ID</param>
        /// <returns></returns>
        GetPublicityListDto GetOnePublicityById(int id);
        /// <summary>
        /// 修改具体的公告信息
        /// </summary>
        /// <param name="dto">数据模型</param>
        /// <returns></returns>
        Task EditOnePublicityByDto(GetPublicityListDto dto);


        List<GetPublicityListDto> GetAllPublicityListDtos(string publicityName);
    }
}
